package com.bite.xml_basic_read;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

/**
 * 使用dom4j获取属性
 *
 * 获取属性两种方式
 *  1)通过节点对象获取属性值: attributeValue("属性名称")--->String
 *  2)通过节点对象获取属性对象:attribute("属性名称")--->Attribute
 *  3)获取当前节点对象的所有属性attributes() ;----->List
 */
public class Demo3 {
    public static void main(String[] args) throws  Exception{

        //1)创建解析器对象
        SAXReader reader = new SAXReader();
        //2)读取文件
        Document document = reader.read(Demo3.class.getClassLoader().getResource("contact.xml")) ;
//        System.out.println(document);

        //1.1 需求:要获取第一个子标签的id属性值
        //属性的获取:必须要先获取属性所在标签对象
        Element conElem =  document.getRootElement().element("contact");
        //方式1:根据属性名称来获取属性值
        String content = conElem.attributeValue("id");
        System.out.println(content);

        /**
         * 需求:获取id="002"属性
         */
        Element conElem2 = (Element) document.getRootElement().elements().get(1);
        System.out.println( conElem2.attributeValue("id"));

        System.out.println("--------------------------------");
        //方式2:通过Attribute来获取id="001"
        conElem =  document.getRootElement().element("contact");
        //通过标签对象获取当前属性对象
        Attribute idAttr = conElem.attribute("id");
        //通过属性对象获取标签名称
        String name = idAttr.getName();
        //通过属性对象获取属性值
        String value = idAttr.getValue();
        System.out.println(name+"="+value);

        System.out.println("-----------------------------");
        //获取当前标签中多个属性
        List<Attribute> attrList = conElem.attributes();
        for (Attribute attr:attrList){
            System.out.println(attr.getName()+"="+attr.getValue());
        }
    }
}
